const uint8_t YM2612::lfoDividers[8] = {
  108,
   77,
   71,
   67,
   62,
   44,
    8,
    5,
};

const uint8_t YM2612::vibratos[8][16] = {
  {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0},
  {0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0},
  {0, 0, 1, 1, 2, 2, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0},
  {0, 0, 1, 2, 2, 2, 3, 4, 4, 3, 2, 2, 2, 1, 0, 0},
  {0, 0, 2, 3, 4, 4, 5, 6, 6, 5, 4, 4, 3, 2, 0, 0},
  {0, 0, 4, 6, 8, 8,10,12,12,10, 8, 8, 6, 4, 0, 0},
  {0, 0, 8,12,16,16,20,24,24,20,16,16,12, 8, 0, 0},
};

const uint8_t YM2612::tremolos[4] = {
  7,
  3,
  1,
  0,
};

const uint8_t YM2612::detunes[3][8] = {
  { 5,  6,  6,  7,  8,  8,  9, 10},
  {11, 12, 13, 14, 16, 17, 18, 20},
  {16, 17, 19, 20, 22, 24, 26, 28},
};

const YM2612::EnvelopeRate YM2612::envelopeRates[16] = {
  11, {0x00000000, 0x00000000, 0x01010101, 0x01010101},
  10, {0x01010101, 0x01010101, 0x01110111, 0x01110111},
   9, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   8, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   7, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   6, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   5, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   4, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   3, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   2, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   1, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   0, {0x01010101, 0x01011101, 0x01110111, 0x01111111},
   0, {0x11111111, 0x11121112, 0x12121212, 0x12221222},
   0, {0x22222222, 0x22242224, 0x24242424, 0x24442444},
   0, {0x44444444, 0x44484448, 0x48484848, 0x48884888},
   0, {0x88888888, 0x88888888, 0x88888888, 0x88888888},
};
